home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d963.lha / SIOD / scm / mer-sor.scm < prev    next >
Text File  |  1993-09-25  |  581b  |  17 lines

  1. (define (merge-list x y)
  2.         (cond ((null? x) y)
  3.               ((null? y) x) 
  4.               (else (if (test (car x) (car y))
  5.                         (cons (car x) (merge-list (cdr x) y))
  6.                         (cons (car y) (merge-list x (cdr y)))))))
  7.  
  8. (define (merge-sort x)
  9.         (if (null? x)
  10.             nil
  11.             (do ((ptr1 x (cdr ptr1))
  12.                  (ptr2 (cdr x) (cdr ptr2)))
  13.                 ((or (null? ptr2) 
  14.                      (not (test (car x) (car ptr2)))) 
  15.                  (set-cdr! ptr1 nil)
  16.                  (merge-list x (merge-sort ptr2))))))
  17.